package com.ruoyi.manage.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 社团招聘信息对象 cr_recruitment
 */
public class CrRecruitment extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 招聘ID */
    private Long recruitmentId;

    /** 社团ID */
    @Excel(name = "社团ID")
    private Long clubId;

    /** 招聘标题 */
    @Excel(name = "招聘标题")
    private String title;

    /** 岗位名称 */
    @Excel(name = "岗位名称")
    private String positionName;

    /** 岗位描述 */
    @Excel(name = "岗位描述")
    private String description;

    /** 岗位要求 */
    @Excel(name = "岗位要求")
    private String requirements;

    /** 技能要求（JSON格式） */
    @Excel(name = "技能要求")
    private String requiredSkills;

    /** 招聘人数 */
    @Excel(name = "招聘人数")
    private Integer recruitCount;

    /** 已申请人数 */
    @Excel(name = "已申请人数")
    private Integer appliedCount;

    /** 薪资范围 */
    @Excel(name = "薪资范围")
    private String salaryRange;

    /** 工作地点 */
    @Excel(name = "工作地点")
    private String workLocation;

    /** 工作时间 */
    @Excel(name = "工作时间")
    private String workTime;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactPerson;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhone;

    /** 招聘开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "招聘开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 招聘结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "招聘结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 状态（0招聘中 1已暂停 2已结束） */
    @Excel(name = "状态", readConverterExp = "0=招聘中,1=已暂停,2=已结束")
    private String status;

    /** 是否推荐（Y是 N否） */
    @Excel(name = "是否推荐", readConverterExp = "Y=是,N=否")
    private String isFeatured;

    /** 浏览次数 */
    @Excel(name = "浏览次数")
    private Integer viewCount;

    // 关联查询字段
    /** 社团名称 */
    private String clubName;

    /** 社团类型 */
    private String clubType;

    /** 社团Logo */
    private String clubLogo;

    /** 申请状态（学生端查询时使用） */
    private String applicationStatus;

    /** 是否已申请 */
    private Boolean hasApplied;

    /** 匹配分数（智能推荐时使用） */
    private Double matchScore;

    public void setRecruitmentId(Long recruitmentId)
    {
        this.recruitmentId = recruitmentId;
    }

    public Long getRecruitmentId()
    {
        return recruitmentId;
    }

    public void setClubId(Long clubId)
    {
        this.clubId = clubId;
    }

    public Long getClubId()
    {
        return clubId;
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public String getTitle()
    {
        return title;
    }

    public void setPositionName(String positionName)
    {
        this.positionName = positionName;
    }

    public String getPositionName()
    {
        return positionName;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }

    public void setRequirements(String requirements)
    {
        this.requirements = requirements;
    }

    public String getRequirements()
    {
        return requirements;
    }

    public void setRequiredSkills(String requiredSkills)
    {
        this.requiredSkills = requiredSkills;
    }

    public String getRequiredSkills()
    {
        return requiredSkills;
    }

    public void setRecruitCount(Integer recruitCount)
    {
        this.recruitCount = recruitCount;
    }

    public Integer getRecruitCount()
    {
        return recruitCount;
    }

    public void setAppliedCount(Integer appliedCount)
    {
        this.appliedCount = appliedCount;
    }

    public Integer getAppliedCount()
    {
        return appliedCount;
    }

    public void setSalaryRange(String salaryRange)
    {
        this.salaryRange = salaryRange;
    }

    public String getSalaryRange()
    {
        return salaryRange;
    }

    public void setWorkLocation(String workLocation)
    {
        this.workLocation = workLocation;
    }

    public String getWorkLocation()
    {
        return workLocation;
    }

    public void setWorkTime(String workTime)
    {
        this.workTime = workTime;
    }

    public String getWorkTime()
    {
        return workTime;
    }

    public void setContactPerson(String contactPerson)
    {
        this.contactPerson = contactPerson;
    }

    public String getContactPerson()
    {
        return contactPerson;
    }

    public void setContactPhone(String contactPhone)
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone()
    {
        return contactPhone;
    }

    public void setStartDate(Date startDate)
    {
        this.startDate = startDate;
    }

    public Date getStartDate()
    {
        return startDate;
    }

    public void setEndDate(Date endDate)
    {
        this.endDate = endDate;
    }

    public Date getEndDate()
    {
        return endDate;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setIsFeatured(String isFeatured)
    {
        this.isFeatured = isFeatured;
    }

    public String getIsFeatured()
    {
        return isFeatured;
    }

    public void setViewCount(Integer viewCount)
    {
        this.viewCount = viewCount;
    }

    public Integer getViewCount()
    {
        return viewCount;
    }

    public String getClubName()
    {
        return clubName;
    }

    public void setClubName(String clubName)
    {
        this.clubName = clubName;
    }

    public String getClubType()
    {
        return clubType;
    }

    public void setClubType(String clubType)
    {
        this.clubType = clubType;
    }

    public String getClubLogo()
    {
        return clubLogo;
    }

    public void setClubLogo(String clubLogo)
    {
        this.clubLogo = clubLogo;
    }

    public String getApplicationStatus()
    {
        return applicationStatus;
    }

    public void setApplicationStatus(String applicationStatus)
    {
        this.applicationStatus = applicationStatus;
    }

    public Boolean getHasApplied()
    {
        return hasApplied;
    }

    public void setHasApplied(Boolean hasApplied)
    {
        this.hasApplied = hasApplied;
    }

    public Double getMatchScore()
    {
        return matchScore;
    }

    public void setMatchScore(Double matchScore)
    {
        this.matchScore = matchScore;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("recruitmentId", getRecruitmentId())
            .append("clubId", getClubId())
            .append("title", getTitle())
            .append("positionName", getPositionName())
            .append("description", getDescription())
            .append("requirements", getRequirements())
            .append("requiredSkills", getRequiredSkills())
            .append("recruitCount", getRecruitCount())
            .append("appliedCount", getAppliedCount())
            .append("salaryRange", getSalaryRange())
            .append("workLocation", getWorkLocation())
            .append("workTime", getWorkTime())
            .append("contactPerson", getContactPerson())
            .append("contactPhone", getContactPhone())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("status", getStatus())
            .append("isFeatured", getIsFeatured())
            .append("viewCount", getViewCount())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}